/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


import java.util.*;

public class maincollection {
    public static void main(String [] args){
        
        Scanner ingreso = new Scanner (System.in);
        collection seleccion = new collection();
        System.out.println("Escoja lo que desea implementar: ");
        System.out.println("1. HashSet");
        System.out.println("2. TreeSet");
        System.out.println("3. LinkedhastSet");
        int num = ingreso.nextInt();
        Set <String> java = seleccion.sets(num);
        Set <String> web = seleccion.sets(num);
        Set <String> celulares = seleccion.sets(num);
        Set <String> copiaJava = seleccion.sets(num);
        Set <String> copiaWeb = seleccion.sets(num);
        Set <String> copia2Java = seleccion.sets(num);
        Set <String> copiaCeluares = seleccion.sets(num);
        Set <String> copiaCeluares2 = seleccion.sets(num);
        Set <String> copia3Java = seleccion.sets(num);
        Set <String> copia4Java = seleccion.sets(num);
        Set <String> copiaCelulares3 = seleccion.sets(num);
        Set <String> copia2Web = seleccion.sets(num);
        Set <String> copia3Web = seleccion.sets(num);
        Set <String> copiaCelulares4 = seleccion.sets(num);
         
        if (num != 1 || num !=2 || num!= 3){
            System.out.println("numero no valido");
        } else 

        if (num == 1 || num == 2 || num == 3) {

        
       int opc = 1;
       
        do{
          
           //pregunta 0: nombre de trabajador
           System.out.println("Ingrese nombre de trabajador");
           String settear = ingreso.next();
           
           //pregunta 1: desarrollador de java
           System.out.println("¿El trabajador es un desarrollador de java?");
           String pregunta1 = ingreso.nextLine();
           
           if (pregunta1.equals("si") || pregunta1.equals("Si")){
               java.add(settear);
           } else 
               if (pregunta1.equals("no") || pregunta1.equals("No"){
                 System.out.println("Dicho trabajador no sera desarrollador de java");
           }
                 
           
           //pregunta 2: desarrolladores de web
           System.out.println("¿El trabajador es un desarrollador de web?");
           String pregunta2 = ingreso.nextLine();
           
           if (pregunta2.equals("si") || pregunta2.equals("Si")){
               web.add(settear);
           } else 
               if (pregunta2.equals("no") || pregunta2.equals("No")){
                 System.out.println("el trabajador no sera desarrollador de web");
           }
                 
           //pregunta 3 : desarrollador de celulares
           System.out.println("¿El trabajador es un desarrollador de celulares?");
           String pregunta3 = ingreso.nextLine();
           
           if (pregunta3.equals("si") || pregunta3.equals("Si")){
               celulares.add(settear);
           } else 
               if (pregunta3.equals("no") || pregunta3.equals("No")){ 
                   System.out.println("El trabajador no es desarrollador de celulares");
           }

    
      //Interseccion entre todos los conjuntos de desarrolladores    

           //se crean primeras copias de java, web y celulares
           copiaJava.addAll(java);
           copiaCelulares.addAll(celulares);
            
           //se verifica cual es la interseccion entre web y java(copia)
           
           System.out.println("Interseccion entre todos los conjuntos");
           copiaJava.retainAll(web);
           copiaCelulares.retainAll(copiaJava);
           
           System.out.println("Estos desarrolladores estaran en todos los conjuntos: ", copiaCelulares);
           
     //Interseccion con diferencia entre web y celulares
  
          //se hace otra copia de celulares
          copiaCelulares2.addAll(celulares);          

          System.out.println("Interseccion entre web y celulares");
          copiaCelulares.retainsAll(web);
          copiaCelulares.removeAll(java);
          System.out.println("Estos desarrolladores son de celualres y de web: ", copiaCelulares);      

           
     //Diferencia
 
       
         System.out.println("La diferencia entre conjuntos de Java y Web");
         copiaJava2.removeAll(web);
         System.out.println("Desarrolladores de java que no sean de web: ", copia2Java);


     //Subconjunto java dentro de web
       
          //se crea segunda copia de java 
          copia3Java.addAll(java);
          copiaWeb.addAll(web);
           
          
          //como metodo "containsAll" genera resultado booleano, se le guarda a una variable booleana 
          
          
          boolean resultado = copiaWeb.containsAll(java);        //web contiene a java
 
         //validaciones de resultado
         if (resultado == true){

           System.out.println ("Entre los desarrolladores de web: ", web);
           System.out.println("Entre los desarrolladores de java: ", java);
           System.out.println("Estos desarrolladores seran de java y estaran dentro de desarrolladores de web: ", copiaWeb);
           
          
           }       else 
               System.out.println("No todos los desarrolladores de java seran tambien de web");
 

         
       
    //Verificacion de conjunto Mayor y despliegue ordenado
       
         copia2Web.addAll(web); //otra copia de web
         copia4Java.addAll(java); //otra copia de java
         copiaCelulares3.addAll(celulares); //otra copia de celulares

          //validaciones ultilizando web como pivote 
          if (copia2Web.size() > copia4Java.size()){
             if (copia2Web.size() > copiaCelulares3.size()){  // web > java y cel
                 System.out.println("El conjunto mas grande de los tres sera: ", copia2Web.sort());
             } else
               if copia2Web.size() < copiaCelulares3.size()){  // celulares > web > java
                 System.out.println("El conjunto mas grande de los tres sera: ", copiaCelulares3.sort());
             }
             }

          if (copia2Web.size() < copia4Java.size()){
             if (copia2Web.size() > copiaCelulares3.size()){ // java > web > celulares
                 System.out.println("El conjunto mas grande de los tres sera: ", copia4Java.sort());
             } else
               if copia2Web.size() < copiaCelulares3.size()){
                 if (copia4Java.size() < copiaCelulares3.size()){ // web < java < celulares
                   System.out.println("El conjunto mas grande de los tres sera: ", copiaCelulares3.sort());
                 } else
 
                 if (copia4Java.size() > copiaCelulares3.size()){ // web < celulares < java
                    System.out.println("El conjunto mas grande de los tres sera: ", copia4Java.sort());
                 }
             }
             }

         //igualdades

         if (copia2Web.size() == copia4Java.size() || copia2Web.size() == copiaCelulares3.size() || copiaCelulares3.size() == copia4Java.size()){
           System.out.println("Por lo menos dos conjuntos tienen el mismo tamaño");
         }

     //Union web y celulares con diferencia de java   
        
        System.out.println("Union entre web y celulares que no sean de java");   
     
        copia3Web.addAll(web); //nueva copia de web
        copiaCelulares4.addAll(celulares); //nueva copia celulares
          
        copia3Web.addAll(copiaCelulares4.toArray()); //se le agrega a web los elementos de celulares
        
        copia3Web.removeAll(java); // se le quitan elementos de java a lo anterior
   
        System.out.println("Desarrolladores de web y de celulares que no sean de java seran: ", copia3Web);       

       }while(opc == 1);

        opc = 2;
    }
      }   
}

